package com.vivo.ic.dm.impl;

import com.vivo.ic.dm.DownloadInfo;

public interface DownloadLifeListener {
    
    /**
     * 下载速度发生改变的回调，每5秒回调一次
     * @param item 改变的item
     * @param bytesPerSecond 下载速度，bytesPerSecond byte/s
     */
    void onDownloadSpeedChange(final DownloadInfo item, final long bytesPerSecond);
    
    /**
     * 下载进度发生改变的回调，注：此回调非常频繁，会直接影响下载线程，不要在此回调中做长耗时操作！
     * @param item 改变的item
     * @param totalSize 下载请求的总大小， 单位：byte
     * @param currentSize 已下载的文件大小， 单位：byte
     */
    void onDownloadSizeChange(final DownloadInfo item, final long currentSize, final long totalSize);
    
    /**
     * 下载停止的回调，状态可能是完成、失败，也可能是等待网络等。
     * @param item 下载完成的item
     */
    void onDownloadStopped(final DownloadInfo item, final int finalStatus);
    
    /**
     * 下载因网络切换而暂停时的回调
     * @param ids
     */
    void onDownloadPausedByNetChange(Long[] ids);
    
    /**
     * 下载因网络切换而启动时的回调
     * @param ids
     */
    void onDownloadStartByNetChange(Long[] ids);
}
